多模态图片到底该传Base64还是File URI

前言

给推理和训练链路加入图片输入时,最先遇到的不是 Vision Encoder,而是图片到底怎么穿过 SDK、Router、Actor 和 vLLM。

常见选择有:

  • Base64 Data URL
  • 本地 File URI
  • 远程 HTTP URL
  • 对象存储签名 URL

这些方式都能把图片送到模型,但请求体大小、解码成本、安全边界和部署要求完全不同。为了不靠感觉选方案,调研中对 File URI 和 Base64 做了同口径性能测试,并把实际链路中的限制一并梳理了一遍。

Base64的成本不只是33%

Base64 每 3 字节编码成 4 个字符,体积理论上增加约 33%。

一张 7.09 MB PNG 放进 JSON 后,请求体会变成约 9.45 MB。除此之外还要经过:

1
2
3
4
5
6
客户端Base64编码
→ JSON序列化
→ 网关和Router读取大请求体
→ JSON解析与重新序列化
→ Base64解码
→ 图片格式解码

File URI 的请求体可能只有几百字节,vLLM 在本机直接读取文件,因此省掉了大部分传输和 JSON 处理。

不过 File URI 只在 Actor 与 vLLM 共享文件系统时成立。跨机器部署中,file:///tmp/a.png 对另一台机器没有任何意义, 除非使用对象存储, 那种集群内共享的文件系统

实测结果

测试使用 1536×1536 图片,覆盖 JPEG、PNG、WebP;每组 3 次 warmup、30 次正式请求,并测试并发 1 和并发 8。关闭 Multimodal Processor Cache,固定 max_tokens=1,尽量把差异集中在图片输入和首字阶段。

部分结果如下:

格式 大小 并发 方式 TTFT P50 TTFT P95 吞吐
JPEG 2.29 MB 1 File URI 346 ms 356 ms 2.876 req/s
JPEG 2.29 MB 1 Base64 353 ms 357 ms 2.847 req/s
PNG 7.09 MB 8 File URI 1398 ms 1753 ms 5.438 req/s
PNG 7.09 MB 8 Base64 1421 ms 1860 ms 5.242 req/s
WebP 2.08 MB 1 File URI 482 ms 491 ms 2.089 req/s
WebP 2.08 MB 1 Base64 488 ms 495 ms 2.052 req/s

小 JPEG 在本机回环网络中差距不大。大 PNG 在并发 8 时,Base64 吞吐下降约 3.6%,P95 TTFT 增加约 108 ms。

更有意思的是 WebP。它只有 2.08 MB,比 JPEG 还小,但服务端图片加载约 160 ms,明显高于 JPEG 的 32 ms 和 PNG 的 49 ms。

所以文件体积不等于图片处理成本。为了省网络把图片全部转 WebP,不一定会让端到端推理更快。

为什么不让SDK默认压缩

SDK 自动把所有图片转成 JPEG 看起来很方便,但会带来几个问题:

  • 文本、表格和细线可能被有损压缩破坏
  • 不同 SDK 版本可能得到不同输入
  • 训练数据无法稳定复现
  • 用户不知道原图已经被修改

更合理的做法是提供显式压缩或转换选项,而不是静默处理。

默认只校验边界并保持用户输入;确实需要控制成本时,由用户明确选择 JPEG 质量或最大尺寸。

图文顺序不能丢

多模态输入不是“文本字段加一个 images 数组”这么简单。例如:

1
文字A → 图片1 → 文字B → 图片2

如果传输时把所有文字拼在一起、图片另放一个列表,模型接收到的语义顺序就变了。

SDK 因此使用按原始顺序排列的 chunk:

1
2
3
4
TextChunk
ImageChunk
TextChunk
ImageChunk

Sampling 和 Training 都透传相同顺序。Actor 转换为 vLLM 或 Trainer 输入时也不能按类型重新分组。

外部Base64,内部File URI

综合部署和性能,最终形成的是分层方案:

1
2
3
4
5
6
7
8
用户 / SDK
→ 内联Base64 PNG/JPEG,跨机器可用
Router
→ 解析、格式归一化和基础校验
Actor
→ 深度校验并写入私有共享目录
vLLM
→ 通过内部File URI读取暂存文件

这样外部协议不依赖共享文件系统,内部又不需要在每一跳重复携带几 MB Base64。

暂存目录必须是 Actor/Sampler 私有共享路径,不能让用户提交任意 file://。文件名由服务端生成,请求完成或 TTL 到期后清理。

最后

图片传输方案不能只比较“哪个格式小”。Base64 的优势是自包含和跨机器,File URI 的优势是本地链路开销低;WebP 文件小但解码未必快;自动压缩省流量却可能破坏训练语义。

真正可用的多模态链路还要同时保证顺序、边界校验、图片清理、视觉 token 限制和跨服务协议一致。

相关记录:

作者

Noah Shen

发布于

2026-07-24

更新于

2026-07-24

许可协议

评论